#include<bits/stdc++.h> 
using namespace std;
//	Excel可以根据每一列的数据进行排序，现在就需要我们模拟这个函数
//1.每个输入包含一个测试用例，对于每个测试用例，第一行包括两个整数N≤100000，以及C。N表示
//	记录数，C表示我们需要排序的列。
//2.然后紧跟N行，每一行包括一个学生的记录。一个学生的记录包含他唯一的ID(六位数码)，姓名(
//	不超过八位且无空格的字符串)，一个成绩([0,100]范围内的正整数)
//3.对于每一个测试用例，输出N行结果。如果C=1，则按照ID升序排列；如果C=2，则按照姓名非递减
//	排序；如果C=3，则按照成绩非递减排序。如果有相同姓名或者成绩的情况出现，则按照ID递增
//4.排序，cmp函数
struct Stu{
	string ID;
	string name;
	int grade;
}; 
bool cmp1(Stu a, Stu b){
	return a.ID < b.ID;
}
bool cmp2(Stu a, Stu b){
	if(a.name < b.name) return a.name < b.name;
	else if(a.name == b.name) return a.ID < b.ID;
	else return false;
}
bool cmp3(Stu a, Stu b){
	if(a.grade < b.grade) return a.grade < b.grade;
	else if(a.grade == b.grade) return a.ID < b.ID;
	else return false;
}
int main(){	//读入、排序、输出 
	int N,C;
	cin>>N>>C;
	Stu stus[N];
	for(int i =0;i<N;i++){
		cin>>stus[i].ID>>stus[i].name>>stus[i].grade;
	}
	switch(C){
		case 1:{
			sort(stus,stus+N,cmp1);
			break;
		}
		case 2:{
			sort(stus,stus+N,cmp2);
			break;
		}
		case 3:{
			sort(stus,stus+N,cmp3);
			break;
		}
		default:{
			break;
		}
	}
	for(int i = 0;i<N;i++){
		cout<<stus[i].ID<<" "<<stus[i].name<<" "<<stus[i].grade<<endl;
	}
	return 0;
}
 